"""
3n+1问题（克拉兹问题）
    问题如下：
        输入一个正整数 n；
        如果 n=1 则结束；
        如果 n 是奇数，则 n 变为 3n+1，否则 n 变为 n/2；
        转入第 2 步。
    请大家编程，构造一个 3n+1 函数，
    该函数完成对 43 的 3n+1 的演化，
    建立一个列表储存演化过程，最终返回该列表及需要演化的步骤数。
    例子：
        input:7
        output:
        [7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1] 16
"""


def convert(n, steps):
    steps.append(n)
    if n == 1:
        print(f"{steps}\n{len(steps)-1}\n")
        return
    if n % 2 != 0:
        step = 3 * n + 1
    else:
        step = n // 2
    convert(step, steps)


def collatz(n):
    convert(n, [])


collatz(7)
collatz(43)
